The Market Ticker ®
Commentary on The Capital Markets - Category [Small Business]
Login or register to improve your experience
Main Navigation
Sarah's Resources You Should See
Full-Text Search & Archives
Leverage, the book
Legal Disclaimer

The content on this site is provided without any warranty, express or implied. All opinions expressed on this site are those of the author and may contain errors or omissions. For investment, legal or other professional advice specific to your situation contact a licensed professional in your jurisdiction.

NO MATERIAL HERE CONSTITUTES "INVESTMENT ADVICE" NOR IS IT A RECOMMENDATION TO BUY OR SELL ANY FINANCIAL INSTRUMENT, INCLUDING BUT NOT LIMITED TO STOCKS, OPTIONS, BONDS OR FUTURES.

Actions you undertake as a consequence of any analysis, opinion or advertisement on this site are your sole responsibility; author(s) may have positions in securities or firms mentioned and have no duty to disclose same.

The Market Ticker content may be sent unmodified to lawmakers via print or electronic means or excerpted online for non-commercial purposes provided full attribution is given and the original article source is linked to. Please contact Karl Denninger for reprint permission in other media, to republish full articles, or for any commercial use (which includes any site where advertising is displayed.)

Submissions or tips on matters of economic or political interest may be sent "over the transom" to The Editor at any time. To be considered for publication your submission must be complete (NOT a "pitch"; those get you blocked as a spammer), include full and correct contact information and be related to an economic or political matter of the day. All submissions become the property of The Market Ticker.

Considering sending spam? Read this first.

2018-01-08 12:49 by Karl Denninger
in Small Business , 123 references
[Comments enabled]  

Here's some more on the license server that was recently added to HomeDaemon-MCP.

One of the biggest issues that faces any software publisher today is piracy and security.  The two are intertwined; not only do you lose sales (maybe a lot of them) to piracy, but what's worse is that stolen copies of the code frequently have "special features" (viruses and similar nasties) added to them, and since most software installers run with privileges this is a huge problem since the user grants permission for the code to install.

If that happens to include a trojan, cryptolocker or other nasty the user is screwed.

HomeDaemon-MCP of courses faces the same challenge, were I to start distributing it or if someone buys it and starts distributing it.  The code also inherently uses cryptography via the OpenSSL library, which it must to (among other things) provide a SSL-protected web server so you can control and monitor your home without other people breaking in.

For those who haven't run a web server with a certificate before in order to have the little padlock show up on user's displays you must have both a certificate and key.  The certificate is public and anyone can retrieve it but the key must remain private.  In addition someone has to "vouch" for that certificate and key belonging to you as being actually yours, which is why there are companies that sell said certificate certification services (e.g. Comodo, Verisign, etc.)  The idea behind "public" certification authorities is that they allegedly actually vet who someone is (at some level, which depends on the service bought and paid for) and supposed are trustworthy (that is, they won't allow anyone to impersonate them and, for example, issue a bogus certificate.)  There's plenty of reason to believe the latter is definitely not true if the person doing the insisting on impersonation is a government agency, by the way (since a government can insist rather loudly including by locking people up or even shooting them if they refuse), but for ordinary brigands and thieves it's probably secure against such games.

In the realm of a private device there's no reason to pay for a public certificate though; you're not a business taking money from the random public. In that case the company that sells you the "thing" is, if trustworthy (and if not why did you give them money?) probably good enough.  However, the requirement for a certificate that is vouched for by someone you trust still exists or anyone can stick a random certificate that claims to identify your site "in the middle" and by doing so decode all the traffic and steal it -- including your password, at which point breaking in becomes pretty darn easy!

HomeDaemon-MCP has always allowed you to specify who is the "root" of that trust in the certificates it uses.  This is now part of what the license server provides.

In addition the certificate and key are also provided by the license server.  That is, formerly if someone stole (or "borrowed") your SD card they could trivially read the key file since it's physically there and virtually any computer can read an SD card -- suddenly your system is not secure any more.  That's because if the key file has a password on it (which would prevent its use, at least without a lot of resource to crack it, as it's encrypted) the software can't start on its own after a power failure because there's nobody present to put in the password.  This by the way is true for most web servers as well, which is why most of them in "ordinary" commerce rely on the physical security of the device rather than a password on the private key for the certificate in question.  This is mitigated by the fact that if your certificate is compromised (e.g. you learn someone may have stolen the key file) you can ask whoever issued it to revoke it and reissue a new certificate, which of course you'd do after generating a new key (and fixing however the old one got stolen.)  As a result the utility of stealing a key on a webserver is somewhat limited since the certificate it is linked to is easily marked compromised (in other words explicitly "do not trust this") and replaced.

What's been coded into HomeDaemon-MCP to effect the "boot up" is a pair of certificates -- that is, CA certificates to validate the connection to the license server.  There is both a root certificate (for which the key is stored on an offline piece of media in a safe and an "intermediate" certificate (which has its key available to sign regular certificates.)  This particular intermediate certificate signs only one server certificate -- for the license server.  Rather than read them from a file the system instead has them coded in the executable.  If these keys are stolen from the server side, that is, if whoever is running the license server itself has a security problem then you'd have to reissue all the keys anyway since you must assume they've all -- including the server's certificate and issuer certificate -- have been compromised.  As a result there's little downside to this approach; if such a breach occurs then the binaries would have to be recompiled and re-issued and until they are, the old ones would refuse to talk to the fixed license server with its new certificate chain.

In addition the server and client sides are both coded to insist on extremely high security connections; if a client tries to connect using something that can be replayed or is not sufficiently safe the server will refuse.

Now when the HomeDaemon-MCP code starts up it asynchronously starts to not only run as usual but also tries to acquire a license set.  It does so by sending a unique hardware ID, a user-specified password and cryptographic hashes of both the executable being run and the operating system kernel.

The server then validates all of this against its data, specifically:

  • Is the hardware ID known to the license server?  That is, did the user steal the software and is trying to use it on multiple (or an unauthorized) piece(s) of hardware?

  • Is the password correct?  That is, is the user's assertion of being the owner of the hardware in question reasonably "good"?

  • Is the executable's hash good?  That is, not only has it not been tampered with (essential) but is it an authorized revision (useful)?  This allows the license granter to, for example, only allow "free" updates for a certain period of time.

  • Is the kernel's hash good?  This is one the license granter may not care about, but on the other hand they may.  It provides the ability to gate support and operation to a list of known-good operating system kernels.  Since a tampered-with operating system is even more dangerous than a tampered executable this is arguably quite a good thing.  However, it is somewhat limited in that the overhead cost of real-time cryptographically checking every operating system component is extremely high, and thus that's not attempted.

  • Is the place the connection is coming from ok?  The current code doesn't check IP addresses against a white or black list, but there's no reason it can't since every connection has an endpoint and TCP connections will not work unless they are valid in both directions.  This doesn't stop someone from "bouncing" off another address but it can prevent someone from using a license in an area that the granter considers "prohibited" (e.g. Iran, China, etc.) without the user taking extraordinary steps.

If the server doesn't like any of the parameters passed to it then it simply shuts down the connection and goes away with no response at all.  The client code will keep trying a couple of times a minute.

If and only if it likes all of the parameters provided then it responds with an operational CA chain for the web and master server, the certificate and key for same, and, if the client is authorized to run as a slave node, the certificate and key for that (which is distinct from that used for the web server.)  All of this is sent over a PFS-encrypted channel and thus is useless if the raw data is captured and replayed even if you somehow manage to later steal the license server's private key.

The HomeDaemon-MCP code installs those credentials and as a result encrypted mode operation, including web access, immediately becomes functional.  A couple of times a day, or if the code is restarted (e.g. after a power failure) the same scenario repeats so if updates are made to the license data the new certificate(s) and key(s) will be loaded.

Since access to the web server functionality is pointless if there's no web access at all (e.g. no access to the Internet) the short delay during startup means nothing since you, as the user, can't get to the service until internet access is restored.  Because license acquisition takes place asynchronously event processing starts immediately and operates normally even if the server is unavailable for some period of time -- but you can't get into the system to manually control or monitor it as the web server (and master capability) is effectively non-functional, immediately closing any connection attempted as the system knows the security credentials are missing.

At no time is any of the returned data stored locally, and there's also no buffer space in which to stash it in the code; instead it is dynamically allocated as required and then immediately cleared when no longer needed.  Therefore if you were to force an attachment and RAM dump of the executable you might be able to recover the credentials, but the the amount of code-hacking you'd have to do to make that information usable in the binary would be quite severe.  The other alternative would be to hack the binary to disable secure-mode operation entirely.  However, if you managed to pull off not only killing the checks but also enabling the access without the credentials you would basically destroy any pretense of security in the application itself and thus render it not only worthless to the user but potentially quite dangerous since random people on the Internet could quite-trivially break in and/or steal your login and password!  In addition if the legitimate licensee figures out you did any of this with his certificate and key he can sign into the license sever's client side and request that the server revoke it.

As such this appears to be pretty good as a security model.  Nothing is perfect; all commercial applications suffer from some risk of hackery and this is no exception, but as applications go since access to the outside world is basically required and secure access to same is also required in order to make it safe hacking out the protection scheme, if violated through hacking on the binary, leaves you with a highly-compromised piece of code that nobody in their right mind would use to control anything.

The License Server code as it sits right now runs against a flat directory structure and doesn't check kernel and executable hashes, or against a Postgres database -- with the query process entirely configurable.  The latter is also multi-threaded making possible very high levels of performance.    What won't be included is the customer-facing front end that handles people setting up their accounts and paying, since that's highly specific to whatever sort of payment model and collection system (e.g. credit cards, PayPal, etc) you wish to use.  I can of course code something along those lines up for a price -- or you can, if there's not already an appropriate "cart-style" web application that fits your needs or that you already have.

As a reminder HomeDaemon-MCP is for sale "lock, stock and barrel" and in source form; my previous article on the potential market is here, and the page on some of the capabilities can be found here.  Finally, there's a not-yet filed provisional patent related to the code that, for obvious reasons, I won't be going into any sort of detail on but will file same before turning over anything that could lead you to figure it out.  Who knows what that's worth, and the acquiring party will be free to file the permanent application and pursue its perfection and issue, should they so choose.  It's entirely possible that patent is more than worth the asking price on its own, incidentally..... but of course as with all things of this sort nobody knows until it's filed and marketed.

Look to the right for contact information.

View this entry with comments (opens new window)
 

2017-12-13 12:35 by Karl Denninger
in Small Business , 191 references
[Comments enabled]  

Sorry, but no.

Dec 13 11:30:25 HD-MCP HD-MCP[46870]: SSL Handshake failed at protocol level on [120.210.191.60]
Dec 13 11:30:25 HD-MCP HD-MCP[46870]: SSL ACCEPT Error [http request] on [120.210.191.60]
Dec 13 11:30:57 HD-MCP last message repeated 40 times

Nice try asshole.

No, you can't break into my HomeDaemon-MCP server.

No, you can't break into my home control system.

No, it doesn't have a cloud connection, no, it won't talk to you without signing in, and no, you can't get in without first negotiating HTTPS either.

And no, attempting to hammer it won't piss it off.

Psst.... the codebase continues to improve and the opportunity is still there, if someone wants it.

View this entry with comments (opens new window)
 

Bet against my view on "Make America Great Again".

And have about a million and a half to put on the table in support of your belief.

For what?

HomeDaemon-MCP.

So let's say you spent the $1.5m and acquire everything.

Here's a hypothetical way of looking at the opportunity.

There are roughly 80 million single-family, detached homes in the US. (I'll ignore condos, mobile homes and townhouses, although some of the first and last are potential customers as well.)

We'll also assume you can appeal to just 0.1% of those single-family homes.  That's a tiny penetration.

But it would amount to 80,000 installations.

The hardware cost to install is under $100 for a minimal install (that's the power that comes from running on a $35 hardware base!) and under $500 for a typical install including sensors and control points (e.g. switches, etc.)

We'll assume you sell the base hardware and software alone for a one-time price of $350, and 50% of your installs go that way (homeowner does the rest on his or her own.)  That's $10m in gross profit.

The real money is in the annuity stream and installed systems.  We'll assume those have a minimum install of $1,500 billed out, of which $500 is your fixed cost.  That fixed cost includes $100 for the controller and $400 for a mix of motion sensors and controlled points.  Install time is 3 hours @ $60 each for skilled labor, or $180.  That's $820 across 40,000 installs, or $32.8 million.  We're now to $42.8 million in gross profit.

Now assume you use the certificate system built into the software and slightly extend it (yes, I can do that on a contract basis, or you can if you have a competent programmer on staff, since the framework is already in the code) to add an annuity-style revenue stream for maintenance, updates and offer an option to the customer for same.  We'll assume you charge $20/month for this and half your 40,000 install-it-for-me customers go for it.

That's another $4.8 million a year in revenue and the effort to issue the certs is about 1 minute each per year.  You can automate that, of course, but there will be expense in doing so.  Of course the actual time spent servicing said customer is variable (and you'd have to take a guess on that), but over 3 years that gets you to $57.2 million.

We haven't yet included what you can make off the "higher end" installations (the million dollar+ homes and condos) where the owner wants not 10 control points but 30, and is willing to pay for it.  He gets convenience, security (e.g. access to his IP cameras and triggering points from them), no cloud required so Google, Amazon and others do not have access to the inside of his home, everand you get to sell that -- it's private, it's his or hers, and it's accessible and controllable from anywhere in the world via said secure infrastructure that has no access for anyone other than him -- including you!

Let's assume that of the 40,000 "you install" locations 10% of them are truly high-end homes (remember, we started with 0.1% penetration into the market and now we're at 10% of 50% of those) are not $1,500 installations, they're $3,000+ installations and your gross margin on those is 50% -- which is easily achievable.  That's another $6 million in gross profit; we are now at $63.2 million.

Is this a reasonable projection over three years time?  It's in the game.  No, it's not "riskless" by any means, but on an adjusted risk:reward basis it looks pretty damn good.  In fact, it's not all that far off what I accomplished with MCSNet in terms of return-on-invested capital.  The real return is always on sweat equity as that gives you much more control for the risk you take, but you have to have something that affords you enough operating margin to make it worth it.

Of course there's SG&A to be accounted for.  How good of a businessperson are you?  Cost control is a big part of the game in any business but any line of work is a hell of a lot easier to succeed at when you start with a nice fat margin on the goods and services you sell up front.

This is a 40%+ gross margin business, in short, as I analyze it, and in areas where you have existing people I bet you can sell to vastly more than 0.1% of the households.  Certainly in many metro areas far more than 0.1% are in the $300,000+ price category where a system like this is a tiny percentage of the home's price yet the value delivered in convenience, energy saving and security dramatically outweigh the tiny uptick in cost generated by including or adding it.

So if you're "MAGA" or just believe my view on monopolists, the rule of law and such is horribly pessimistic and wrong, and in addition have the cash to put on the table to back your position with a big fat check then come do so.  Show me that my pessimism is unwarranted the best way anyone ever can -- by making a bunch of money that I am intentionally leaving on the table, handing to me just one fortieth of what I could have had.  We'll drink a beer together when you prove my view on the business environment in the US to be unreasonably pessimistic and you'll laugh as you motor away from the pier on your new yacht.

Of course the above is all "back-of-the-envelope" speculation but that's how a decent functional business plan starts being developed.  It's how MCSNet was developed originally, but before it was actually executed on I fleshed it out and actually wrote a full five-year business plan with pro-forma financials.

The difference between doing something like this and the Ponzi scheme nonsense peddled by many on Wall Street such as belief in 30% growth figures into the indefinite future when you already have half the nation on your service (cough-amazon-netflix-facesucker-cough-cough!) this sort of back-of-the-envelope pencil-out assumes 0.1% penetration into potential buyers.

What happens if you can get 2% penetration?  You make well north of a billion, and then you really laugh at me.

So if you're both "accredited" (you almost-certainly are if you have the capital) and this makes you salivate look right, click and email me.  We'll talk.

When I started MCSNet my view on business changed. I don't consider a 10% gross margin to be attractive at all.  IMHO if you can't get into the 30s it's not worth it on a risk-adjusted basis, and the target is 40%.  IMHO this, while certainly not "buy it and sit" like speculating in something like Bitfraud, fits that category -- but since success is of course directly related to both your analysis (rather than mine) and how you execute (rather than how I execute) this is all hypothetical, but if that 0.1% penetration can be turned into 0.5%, well...... you do the math.

View this entry with comments (opens new window)
 

2017-11-20 16:27 by Karl Denninger
in Small Business , 163 references
[Comments enabled]  

For a bit of background see this article, or check out the page at http://homedaemon.net

The software now has had added to it a quite-complete Amcrest IP camera interface.  It is capable of triggering events on any of:

  • Motion
  • Audio (either "any" or "above threshold")
  • SD card removed (if you have one in the unit)
  • Dry contact (these cameras have a user-selectable normally closed or open input on the back; quite useful for things like a door or window switch, for example.
  • Attempted hacking (e.g. repeated authentication failures)

These capabilities should be functional against any "modern" Amcrest IP camera with reasonably-recent firmware.

In addition at any time (not just on the triggering of these events, but any event HomeDaemon recognizes) each camera can be instructed to take a snapshot with optional motion to a pre-set point occurring first.  The snapshot can be taken as a "regular" (subject to roll-off) or "protected" (in a folder not subject to roll-off) image.  The software has configurable limits for the maximum number of snapshots to keep and the minimum file space that must be available on whatever device is used for same, and it will manage space as required to remain within those limits.

The snapshot and "grab" functions are all implemented over "https" (and require it) since the provision of a username and password to the camera is required and while the cameras supports "digest" authentication (better than "Basic", which Amcrest recently removed -- thank God!) MD5 digests are not particularly secure.  It is strongly recommended that the storage volume for retrieved snapshots not be on the system boot device (e.g. a plugged-in USB stick is appropriate) to prevent the possibility of trouble with that device causing problems for the running system.  Once stored having a timed job or listener transfer images as you wish to an offsite location is a matter of trivial implementation since there is a full FreeBSD operating system running under the HomeDaemon-MCP code and the files stored are standard .JPGs with names based on the camera name, date and time.

Finally, all of this, like the rest of HomeDaemon MCP's operational capabilities, takes place under a high-performance multi-threaded implementation so as to be able to transact against multiple cameras at once.

Since the system includes certificate-based authentication already building in rights management (either on a subscription or purchase basis) would be quite easy to suit whatever business model you may have in mind.

Come check out the description and more info -- this code is for sale, all-rights and in source (written entirely in "C"), should you be looking to either establish to expand a home control firm with a security-related focus.  Click on the contact links on the right sidebar to get ahold of me -- and thanks!

View this entry with comments (opens new window)
 

2017-11-16 15:03 by Karl Denninger
in Small Business , 74 references
[Comments enabled]  

HomeDaemon-MCP has now had added to it's bag of tricks an interface to Amcrest IP cameras.

It can now "sense" motion or other events (as defined on the camera) and trigger events on HomeDaemon.  Among other things Amcrest is nice enough to expose a simple HTTP-based API that allows you to move the camera to a given preset and take pictures.

This makes trivial interfacing and extending HomeDaemon's existing capabilities in providing an "alarm" service to include taking of pictures, using the camera's motion sense capabilities as a "trip" and, of course, securely copying them to your private file storage on or off your local network.

This functionality should work with all Amcrest camera devices on the market of reasonably-recent vintage and firmware. I have verified that it is fully functional with both the 1080p (one revision back) and 2k (current) models.

There is no longer a need to trust anyone else with said images other than yourself, ever.  It is trivial to, for example, have the system take images on a timed basis and upload them somewhere, whether that "basis" is predicated on an event (e.g. motion detected somewhere, not necessarily in the immediate area of the camera), to take a picture once a day of your pool water level and email it to you (nice if you are worried about evaporation being a problem so you can ask the neighbor to come turn the hose on for a couple of hours, etc) and more.

See here for more information.

View this entry with comments (opens new window)